/**
 * @file engineMod.hpp
 * @brief documents the engine module
 */

/**
 * @defgroup engineMod Engine Framework
 * @brief The core classes for the wolf Engine.
 *
 * The core class is the Engine. It do all common SDL tasks, like to initialize, to set the video
 *  mode, etc. The only requirement is to check if the engine is running and call a frame
 *  (Engine.doFrame), and even that can be done automatically using the @ref gameMod "Game Framework".
 *
 * The non-common tasks are done by the managers. All manager are subclass of Manager. They can overload
 *  its methods to receive specific happenings (we will refer to it as happening, to avoid confusion
 *  with @ref eventsMod "Actor Events"). These happenings represents the manager's addition and removal,
 *  the frame start, frame refresh and draw time and the SDL_Events and the Quit request (the reason the quit
 *  is not included among the other events is because the exiting can be denied. For example a save confirm
 *  can be launched when you try to quit).
 *
 * As long you can do a game using the managers as entities, a much more efficient event handling framework
 *  is provided by @ref actorsMod "Actor Framework". So the Manager is used more like a service provider.
 *  For example, the DebugManager (added automatically if you start your engine in debug mode) checks the
 *  key pressing and if detects an ESC pressed, it closes it immediately. Other good example is the
 *  ActorManager, which receive the happenings and by some checking transforms it on Events.
 */
